It can be appreciated that a large number of server computers in operation today run a member of the Microsoft Windows® family of operating systems, such as Windows® Server 2003 Data Center Edition and Windows® NT 4.0. These operating systems provide services to client computers, such as access to data stored in shared directories, access to printers connected to the server, user authentication services, networking services, directory services, etc.
It can also be appreciated that various versions of the Linux® operating system, including Red Hat Enterprise Server AS 3 and Novell SuSE Professional Linux® 9 are becoming more popular and more widely deployed.
One skilled in the art will recognize that operating system services and applications are typically configured according to the user's needs, and that such configuration settings are stored through a persistent mechanism, such as an on-disk file, so that when the system is reset or restarted, the configuration settings can be read and the service or application can run with the stored settings; in this way the user does not have to reconfigure the settings from scratch.
Windows® and Linux® operating systems provide many similar functions, such as the ability for client computers to access data on a server and to display text and graphics on a computer screen. On Windows® operating system, for example, file and print sharing via the Server Message Block (SMB) protocol and user authentication via the NT LAN Manager protocol (NTLM) is provided by the operating system itself. Similar functionality is provided on Linux® operating system, but requires additional modules to be installed. Advanced Server for UNIX, ported to Linux® operating system, is one application that provides file, print, and authentication via the SMB and NTLM protocols. Samba is another application that provides such functionality. Syntax Totalnet Advanced Server is a third such product.
Although the functions provided are similar between the two operating systems, often they are provided or configured in different and incompatible ways. For example, configuration settings related to file shares are stored in a set of data files called the system registry on Windows® operating system, while configuration settings related to file shares are stored in text based configuration files on Linux® operating system, e.g. a format that is different from its counterpart on Windows® operating system. Similarly, data related to directory services, which, as the name suggests, deals with information about the people and resources available on a given computer system or network, is stored in the Active Directory on Windows® operating system, but is stored using OpenLDAP or other software on Linux® operating system. Likewise, configuration settings for Internet Information Server (IIS), a web server that runs on Windows® operating system are stored in the Windows® operating system registry, while configuration settings for Apache, a web server often deployed on Linux® operating system are stored in a text file named HTTPD.CONF.
While the Linux® operating system has existed for a number of years, it is only recently that it has reached a point of viability and stability that system administrators will consider deploying a server running Linux® operating system where they might today or in the past have run Windows® operating system. With the functionality provided by the two operating system families becoming more and more similar, system administrators running the Windows® operating system desire, for financial, technical, and other reasons, to migrate the services provided and data stored on servers running the Windows® operating system to Linux® operating system.
Due to the incompatibility in the ways in which the two operating system families are configured and the ways in which they store configuration settings, however, this task is a difficult, time-consuming, and error-prone manual process. In particular, an administrator must understand the particular settings in question on Windows® operating system, and the corresponding settings on Linux® operating system. Often, administrators are hampered by their lack of experience on one or the other of the two operating systems, the difficulty of finding the appropriate settings on either system, the challenge of translating between the settings of the two systems, and the need to install and configure additional software and to write and configure scripts on the Linux® system to have it provide the equivalent functions as the Windows® system.
The problem of migration is not a new one, as administrators have been confronted with the problem of moving from an old version of an operating system to a new version for years. Alternatively, administrators have been forced to move from one physical machine to another to take advantage of new hardware capabilities or because of a desire to move off an old piece of hardware. However, these migrations have been relatively simple given the relative compatibility in settings between the old and new operating system versions or between the two machines, which may even be running the same version of the operating system.
The present invention addresses the aforementioned problem by automating the migration process from Windows® operating system to Linux® operating system, as it relates both to configuration information and to data.